<?php

namespace app\admin\model;

use think\Model;
use traits\model\SoftDelete;

class OnlineClassroom extends Model
{
    use SoftDelete;
    
    // 表名
    protected $name = 'online_classroom';
    
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'datetime';

    // 定义时间戳字段名
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';
    protected $deleteTime = 'delete_time';
    
    // 定义字段类型
    protected $type = [
        'delete_time' => 'datetime',
        'create_time' => 'datetime',
        'update_time' => 'datetime'
    ];

    // 追加属性
    protected $append = [
        'course_type_text',
        'is_completed_text',
        'device_type_text',
        'status_text'
    ];
    
    /**
     * 课程类型列表
     */
    public function getCourseTypeList()
    {
        return [
            'video' => '视频课程',
            'audio' => '音频课程', 
            'text' => '文本课程',
            'live' => '直播课程'
        ];
    }
    
    /**
     * 完成状态列表
     */
    public function getIsCompletedList()
    {
        return [
            '0' => '未完成',
            '1' => '已完成'
        ];
    }
    
    /**
     * 设备类型列表
     */
    public function getDeviceTypeList()
    {
        return [
            'pc' => '电脑',
            'mobile' => '手机',
            'tablet' => '平板'
        ];
    }
    
    /**
     * 状态列表
     */
    public function getStatusList()
    {
        return [
            '0' => '禁用',
            '1' => '正常'
        ];
    }
    
    /**
     * 获取课程类型文本
     */
    public function getCourseTypeTextAttr($value, $data)
    {
        $value = $value ? $value : (isset($data['course_type']) ? $data['course_type'] : '');
        $list = $this->getCourseTypeList();
        return isset($list[$value]) ? $list[$value] : '';
    }
    
    /**
     * 获取完成状态文本
     */
    public function getIsCompletedTextAttr($value, $data)
    {
        $value = $value ? $value : (isset($data['is_completed']) ? $data['is_completed'] : '');
        $list = $this->getIsCompletedList();
        return isset($list[$value]) ? $list[$value] : '';
    }
    
    /**
     * 获取设备类型文本
     */
    public function getDeviceTypeTextAttr($value, $data)
    {
        $value = $value ? $value : (isset($data['device_type']) ? $data['device_type'] : '');
        $list = $this->getDeviceTypeList();
        return isset($list[$value]) ? $list[$value] : '';
    }
    
    /**
     * 获取状态文本
     */
    public function getStatusTextAttr($value, $data)
    {
        $value = $value ? $value : (isset($data['status']) ? $data['status'] : '');
        $list = $this->getStatusList();
        return isset($list[$value]) ? $list[$value] : '';
    }
    
    /**
     * 关联用户表
     */
    public function user()
    {
        return $this->belongsTo('User', 'user_id', 'id', [], 'LEFT')->setEagerlyType(0);
    }
}